10.1 Объекты

В JavaScript объекты являются основным способом хранения и организации данных. Объекты представляют собой коллекции пар «ключ-значение», где ключи (или свойства) — это строки, а значения могут быть любыми данными (числа, строки, массивы, другие объекты и т.д.).

Основные понятия и работа с объектами:

  1. Создание объекта: Объекты в JavaScript можно создавать двумя способами:

    • Литеральный способ: Это самый простой и часто используемый способ создания объектов.

      let person = {
      name: "John",  // свойство name
      age: 30,       // свойство age
      greet: function() {  // метод greet
       console.log("Hello!");
      }
      };
    • Через конструктор new Object(): Это альтернативный способ создания объекта, но он используется реже.

      let person = new Object();
      person.name = "John";
      person.age = 30;
      person.greet = function() {
      console.log("Hello!");
      };
  2. Доступ к свойствам объекта: Для доступа к свойствам объекта можно использовать два способа:

    • Через точечную нотацию (dot notation):
      console.log(person.name);  // John
      console.log(person.age);   // 30
    • Через квадратные скобки (bracket notation):
      Этот способ полезен, если ключ объекта содержит пробелы или является переменной.
      console.log(person["name"]);  // John
      console.log(person["age"]);   // 30
  3. Добавление или изменение свойств объекта: Для добавления новых или изменения существующих свойств объекта используется та же точечная нотация или квадратные скобки.

    person.name = "Alice";  // Изменяем существующее свойство
    person.city = "New York";  // Добавляем новое свойство
  4. Методы объектов: Объекты могут содержать не только данные, но и функции, которые называются методами. Методы объектов — это функции, которые выполняются в контексте объекта.

    person.greet = function() {
     console.log("Hello, " + this.name);
    };
    
    person.greet();  // "Hello, Alice"

    Внутри метода this ссылается на сам объект, что позволяет обращаться к его свойствам.

  5. Удаление свойств объекта: Для удаления свойства объекта используется оператор delete.

    delete person.age;  // Удаляет свойство age
  6. Цикл по объекту: Для перебора всех свойств объекта можно использовать цикл for...in.

    for (let key in person) {
     console.log(key + ": " + person[key]);
    }
  7. Вложенные объекты: Объекты могут быть вложены внутри других объектов, что позволяет создавать более сложные структуры данных.

    let person = {
     name: "Alice",
     address: {
       street: "123 Main St",
       city: "New York"
     }
    };
    console.log(person.address.city);  // New York

Пример использования объекта:

let car = {
  brand: "Toyota",
  model: "Camry",
  year: 2020,
  start: function() {
    console.log("Engine started");
  }
};

console.log(car.brand);  // Toyota
console.log(car["model"]);  // Camry

car.start();  // Engine started

car.year = 2021;  // Обновляем год
console.log(car.year);  // 2021

delete car.model;  // Удаляем модель
console.log(car.model);  // undefined

Особенности объектов в JavaScript:

  • Динамическая природа: Вы можете добавлять, изменять или удалять свойства объекта в любое время.
  • Ссылочная передача: Объекты передаются по ссылке, а не по значению. Это означает, что если вы присвоите один объект другому, оба будут ссылаться на один и тот же объект в памяти.
    let obj1 = { a: 1 };
    let obj2 = obj1;  // obj2 теперь ссылается на тот же объект, что и obj1
    obj2.a = 2;
    console.log(obj1.a);  // 2
    console.log(obj2.a);  // 2

Объекты — это основа работы с данными в JavaScript и позволяют организовывать и структурировать информацию удобным способом.